package com.k2

/**
 * @Author taiyn
 * @Description object HelloWorld 相当于声明了一个单例对象.
 * @Date
 * */
object HelloWorld {
  /**
   * Unit 是返回值, 相当于void.
   * @param args
   */
  def main(args: Array[String]): Unit = {
    // Scala没有分号
    println("Hello, world!")
    // Scala中都是对象, 没有基础类型之分; 这里相当于1调用了'+()'方法
    println(1.+(2))
    // 方法也是对象
    launchFunction(printSth)
    println(a)

    loop()
  }

  private def launchFunction(func: () => Unit):Unit = {
    println("launch function")
    func()
  }
  private def printSth(): Unit = {
    println("function is object!")
  }

  /**
   * 这样也可以定义方法
   * @return
   */
  private def a = 1

  private def loop(): Unit = {
    val arr = Array[Int](1, 2, 3)
    var i = 0
    println("while print \n")
    while(i < arr.length) {
      println(arr(i))
      i += 1
    }

    println("for print \n")
    for(a <- arr) {
      println(a)
    }

    println("functional print \n")
    arr.foreach(println)
  }
}